package com.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.vo.Page;

public interface UniversalDao {
	/**
	 * ���¼�¼����ݱ���
	 * 
	 * @param object
	 */
	void update(Object o);

	/**
	 * ���Ӽ�¼����ݱ���
	 * 
	 * @param object
	 */
	void insert(Object o);

	/**
	 * �������ɾ��һ����ݿ��¼
	 * 
	 * @param object
	 */

	void delete(Object o);

	/**
	 * ��ȡ��ݱ����еļ�¼
	 * 
	 * @param object
	 * @return list
	 */
	@SuppressWarnings("unchecked")
	List findAll(Class clazz);

	/**
	 * ����������ݱ���ȡ��һ������
	 * 
	 * @param clazz
	 * @param id
	 * @return object
	 */
	@SuppressWarnings("unchecked")
	Object findByID(Class clazz, Serializable id);

	/**
	 * ������������ɾ��
	 * 
	 * @param entities
	 */
	@SuppressWarnings("unchecked")
	public void deleteAll(Collection entities);
	
	public List<Object> findByProperty(Class clazz, String propertyName,Object value);
	/*
	 * @function 根据传递过来的Object,分页显示在数据库中与其匹配的记录
	 * 
	 * @param pageNo 当前页数
	 * 
	 * @param pageSize 每页显示的记录数
	 * 
	 * @param object 将查询条件封装为Object
	 * 
	 * @return 将查询结果封装为Page返回
	 */
	public Page findPageByExample(int pageNo, int pageSize, Object object);

	/**
	 * @function 分页显示符合所有的记录数，将查询结果封装为Page
	 * @param pageNo
	 *            当前页数
	 * @param pageSize
	 *            每页显示的条数
	 * @param map
	 *            将查询条件封装为map
	 * @param clazz
	 * 
	 * @return 查询结果Page
	 */
	public Page findPageByCriteria(int pageNo, int pageSize, Map map,
			Class clazz);

	/**
	 * @function 分页显示符合所有的记录数，将查询结果封装为Pager
	 * @param pageNo
	 *            当前页数
	 * @param pageSize
	 *            每页显示的条数
	 * @param instance
	 *            将查询条件封装为专家Bean
	 * @return 查询结果Pager
	 */
	public List<Object> findPageByQuery(int pageNo, int pageSize, String hql,
			Map map);
	
	public Page Page(int pageNo,int pageSize,String sql,String orderBy,Map map);
	public Object getObject(String sql,Object[] param,Class clazz);
}